/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.folha.dao;

import br.com.folha.entity.ProfessorUnidadeTipologia;
import br.com.folha.entity.Unidade;
import br.com.folha.utilidades.HibernateUtil;
import java.io.Serializable;
import java.util.List;
import javax.persistence.NoResultException;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author marceloml
 */
public class unidadeTipologiaDao implements Serializable {
    
    private static final long serialVersionUID = 1L;
    private ProfessorUnidadeTipologia tipologiaProfessor;
    
    public ProfessorUnidadeTipologia getById(int id)
    { 
       Session sessao = HibernateUtil.getSessionFactory();
       Query query = sessao.createQuery("FROM ProfessorUnidadeTipologia WHERE id = :id");               
       query.setParameter("id", id);        

       return (ProfessorUnidadeTipologia) query.uniqueResult();
    }    
    
    public List<ProfessorUnidadeTipologia> listaUnidadeTipologia(Object t, Integer professor) {
        Session sessao = HibernateUtil.getSessionFactory();
        Criteria criteria = sessao.createCriteria(t.getClass());  
        criteria.createAlias("unidade", "u");
        criteria.createAlias("tipologia", "t");        
        
        criteria.add(Restrictions.eq("professor", professor));
        
        List lista = criteria.list();
        sessao.close();
        return lista;      
    }    
    
    public Integer consultaProfessorUnidade(Integer professor, Unidade unidade) {
       Session sessao = HibernateUtil.getSessionFactory();
       Query query = sessao.createQuery("FROM ProfessorUnidadeTipologia WHERE professor = :professor and unidade = :unidade");               
       query.setParameter("professor", professor);        
       query.setParameter("unidade", unidade);    

       sessao.close();
       return query.list().size();   
    }
    
    public ProfessorUnidadeTipologia consultaTipologiaProfessor(Integer professor, Unidade unidade){
        
        Session sessao = HibernateUtil.getSessionFactory();
        Query query = sessao.createQuery("FROM ProfessorUnidadeTipologia WHERE professor = :professor and unidade = :unidade");               
        query.setParameter("professor", professor);        
        query.setParameter("unidade", unidade);                  
        
            try{
             tipologiaProfessor = (ProfessorUnidadeTipologia) query.uniqueResult();
            }catch(NoResultException e){
                tipologiaProfessor = null;
            }finally{
                sessao.close();
            }        
                
        return tipologiaProfessor;
                        
    }
    
}
